Bai16_React_Introduce
Mục tiêu bài học
- Hiểu được cách kết hợp TypeScript với React
- Biết cách khởi tạo một dự án React + TypeScript chuẩn
- Hiểu cách định nghĩa component sử dụng TypeScript
- Phân biệt cách viết props và state trong React + TS
- Biết xử lý sự kiện và hiển thị danh sách trong môi trường TypeScript
Nội dung chính
1. Tạo project React + TypeScript
Sử dụng create-react-app
với template --template typescript
:
npx create-react-app my-react-ts-app --template typescript
cd my-react-ts-app
npm start
Sau khi tạo, trong thư mục src/
sẽ có các file .tsx
, ví dụ: App.tsx
, index.tsx
.
2. File .tsx
là gì?
.tsx
= TypeScript + JSX- Cho phép viết JSX với kiểm tra kiểu dữ liệu (type checking) mạnh mẽ
- Giúp phát hiện lỗi sớm trong khi viết code
3. Viết component với TypeScript
a. Component đơn giản
function Hello() {
return <h1>Chào bạn đến với React + TS</h1>;
}
b. Component có props
type HelloProps = {
name: string;
};
function Hello({ name }: HelloProps) {
return <h1>Xin chào, {name}</h1>;
}
Sử dụng:
<Hello name="Phú" />
4. Sử dụng useState
trong TypeScript
import { useState } from "react";
function Counter() {
const [count, setCount] = useState<number>(0);
return (
<div>
<p>Bạn đã nhấn: {count} lần</p>
<button onClick={() => setCount(count + 1)}>Tăng</button>
</div>
);
}
5. Xử lý sự kiện
function Clicker() {
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {
alert("Bạn đã nhấn nút!");
};
return <button onClick={handleClick}>Nhấn tôi</button>;
}
6. Render danh sách
type Student = {
id: number;
name: string;
};
const students: Student[] = [
{ id: 1, name: "Phú" },
{ id: 2, name: "Linh" },
];
function StudentList() {
return (
<ul>
{students.map((s) => (
<li key={s.id}>{s.name}</li>
))}
</ul>
);
}
7. Cấu trúc thư mục chuẩn (đề xuất)
src/
├── components/
│ └── Hello.tsx
├── types/
│ └── index.ts
├── App.tsx
├── index.tsx
Bài tập
Bài 1 – Hello Component
Tạo component Hello
nhận vào name
và hiển thị "Xin chào, {name}"
. Gán kiểu props bằng type
.
Bài 2 – Counter
Tạo component Counter
có nút +
, -
, hiển thị số đếm. Dùng useState<number>
.
Bài 3 – Danh sách sản phẩm
Tạo mảng products
gồm { id, name, price }
. Hiển thị ra ul
, mỗi sản phẩm là 1 li
.
Bài 4 – Form người dùng
Tạo form với các ô: tên, email. Khi submit, hiển thị dữ liệu ra bên dưới. Dùng useState
.
Bài 5 – Xử lý props object
Tạo component UserCard
nhận props là 1 object kiểu User
gồm name
, email
, age
, và hiển thị ra card thông tin.